Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
67 / 67
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
1 / 1
ServiceProvider
100.00% covered (success)
100.00%
67 / 67
100.00% covered (success)
100.00%
5 / 5
41
100.00% covered (success)
100.00%
1 / 1
 boot
100.00% covered (success)
100.00%
17 / 17
100.00% covered (success)
100.00%
1 / 1
7
 about
100.00% covered (success)
100.00%
29 / 29
100.00% covered (success)
100.00%
1 / 1
23
 register
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 routes
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
9
 version
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4/**
5 * Playground
6 */
7namespace Playground\Site\Blade;
8
9use Illuminate\Foundation\Console\AboutCommand;
10use Illuminate\Foundation\Support\Providers\AuthServiceProvider;
11use Illuminate\Support\Str;
12
13/**
14 * \Playground\Site\Blade\ServiceProvider
15 */
16class ServiceProvider extends AuthServiceProvider
17{
18    protected string $package = 'playground-site-blade';
19
20    public const VERSION = '73.0.0';
21
22    public function boot(): void
23    {
24        /**
25         * @var array<string, mixed> $config
26         */
27        $config = config($this->package);
28
29        if (! empty($config['load']) && is_array($config['load'])) {
30
31            if (! empty($config['load']['routes']) && is_array($config['routes'])) {
32                $this->routes($config['routes']);
33            }
34
35            if (! empty($config['load']['views'])) {
36                $this->loadViewsFrom(
37                    dirname(__DIR__).'/resources/views',
38                    'playground-site'
39                );
40            }
41
42            if ($this->app->runningInConsole()) {
43                // Publish configuration
44                $this->publishes([
45                    sprintf('%1$s/config/%2$s.php', dirname(__DIR__), $this->package) => config_path(sprintf('%1$s.php', $this->package)),
46                ], 'playground-config');
47
48                // Publish Blade Views
49                $this->publishes([
50                    dirname(__DIR__).'/resources/views' => resource_path(Str::of('vendor/'.$this->package)->beforeLast('-blade')->toString()),
51                ], 'playground-blade');
52            }
53
54            $this->about();
55        }
56    }
57
58    public function about(): void
59    {
60        $config = config($this->package);
61        $config = is_array($config) ? $config : [];
62
63        $load = ! empty($config['load']) && is_array($config['load']) ? $config['load'] : [];
64
65        $routes = ! empty($config['routes']) && is_array($config['routes']) ? $config['routes'] : [];
66
67        $sitemap = ! empty($config['sitemap']) && is_array($config['sitemap']) ? $config['sitemap'] : [];
68
69        $version = $this->version();
70
71        AboutCommand::add('Playground: Site Blade', fn () => [
72            '<fg=yellow;options=bold>Load</> Views' => ! empty($load['views']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
73
74            '<fg=blue;options=bold>View</> [layout]' => sprintf('[%s]', $config['layout']),
75            '<fg=blue;options=bold>View</> [prefix]' => sprintf('[%s]', $config['view']),
76
77            '<fg=magenta;options=bold>Sitemap</> Views' => ! empty($sitemap['enable']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
78            '<fg=magenta;options=bold>Sitemap</> Guest' => ! empty($sitemap['guest']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
79            '<fg=magenta;options=bold>Sitemap</> User' => ! empty($sitemap['user']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
80            '<fg=magenta;options=bold>Sitemap</> [view]' => sprintf('[%s]', $sitemap['view']),
81
82            '<fg=magenta;options=bold>Dashboard</> Views' => ! empty($config['dashboard']['enable']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
83            '<fg=magenta;options=bold>Dashboard</> Guest' => ! empty($config['dashboard']['guest']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
84            '<fg=magenta;options=bold>Dashboard</> User' => ! empty($config['dashboard']['user']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
85            '<fg=magenta;options=bold>Dashboard</> [view]' => sprintf('[%s]', $config['dashboard']['view']),
86
87            '<fg=red;options=bold>Route</> about' => ! empty($routes['about']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
88            '<fg=red;options=bold>Route</> bootstrap' => ! empty($routes['bootstrap']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
89            '<fg=red;options=bold>Route</> dashboard' => ! empty($routes['dashboard']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
90            '<fg=red;options=bold>Route</> home' => ! empty($routes['home']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
91            '<fg=red;options=bold>Route</> index' => ! empty($routes['index']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
92            '<fg=red;options=bold>Route</> sitemap' => ! empty($routes['sitemap']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
93            '<fg=red;options=bold>Route</> theme' => ! empty($routes['theme']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
94            '<fg=red;options=bold>Route</> welcome' => ! empty($routes['welcome']) ? '<fg=green;options=bold>ENABLED</>' : '<fg=yellow;options=bold>DISABLED</>',
95
96            'Package' => $this->package,
97            'Version' => $version,
98        ]);
99    }
100
101    public function register(): void
102    {
103        $this->mergeConfigFrom(
104            sprintf('%1$s/config/%2$s.php', dirname(__DIR__), $this->package),
105            $this->package
106        );
107    }
108
109    /**
110     * @param array<string, bool> $routes
111     */
112    public function routes(array $routes): void
113    {
114        if (! empty($routes['about'])) {
115            $this->loadRoutesFrom(dirname(__DIR__).'/routes/about.php');
116        }
117        if (! empty($routes['bootstrap'])) {
118            $this->loadRoutesFrom(dirname(__DIR__).'/routes/bootstrap.php');
119        }
120        if (! empty($routes['dashboard'])) {
121            $this->loadRoutesFrom(dirname(__DIR__).'/routes/dashboard.php');
122        }
123        if (! empty($routes['home'])) {
124            $this->loadRoutesFrom(dirname(__DIR__).'/routes/home.php');
125        }
126        if (! empty($routes['index'])) {
127            $this->loadRoutesFrom(dirname(__DIR__).'/routes/index.php');
128        }
129        if (! empty($routes['sitemap'])) {
130            $this->loadRoutesFrom(dirname(__DIR__).'/routes/sitemap.php');
131        }
132        if (! empty($routes['theme'])) {
133            $this->loadRoutesFrom(dirname(__DIR__).'/routes/theme.php');
134        }
135        if (! empty($routes['welcome'])) {
136            $this->loadRoutesFrom(dirname(__DIR__).'/routes/welcome.php');
137        }
138    }
139
140    public function version(): string
141    {
142        return static::VERSION;
143    }
144}